Skip to content

Upgrade to Spring Boot 4.0.1 and Wicket 10.8.0#2

Draft
keesvandieren with Copilot wants to merge 3 commits into
masterfrom
copilot/upgrade-spring-boot-wicket
Draft

Upgrade to Spring Boot 4.0.1 and Wicket 10.8.0#2
keesvandieren with Copilot wants to merge 3 commits into
masterfrom
copilot/upgrade-spring-boot-wicket

Conversation

Copilot AI commented Dec 29, 2025

Copy link
Copy Markdown

Upgrades Spring Boot from 3.5.5 to 4.0.1, Wicket from 10.6.0 to 10.8.0, and Wicketstuff to 10.7.0 (latest available).

Breaking Changes Addressed

Removed deprecated autoconfiguration classes

  • CassandraAutoConfiguration, HazelcastAutoConfiguration, RedisAutoConfiguration no longer exist in Spring Boot 4.0
  • Removed @AutoConfigureAfter annotations referencing these classes from datastore configurations

Spring Data JPA null specification handling

// Before: Could return null when no filters applied
Specification<Customer> spec = null;
for (Specification<Customer> specification : specs) {
    spec = spec == null ? Specification.where(specification) : spec.and(specification);
}
return spec; // ❌ Fails in Spring Boot 4.0

// After: Returns conjunction when empty
if (specs.isEmpty()) {
    return (root, query, cb) -> cb.conjunction(); // ✅ Always returns valid specification
}

Liquibase autoconfiguration

  • Replaced direct liquibase-core dependency with spring-boot-starter-liquibase
  • Spring Boot 4.0 requires the starter for proper autoconfiguration

Version Constraints

Wicketstuff 10.8.0 not yet published - using 10.7.0 which is compatible with Wicket 10.8.0.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • config.liquibase.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -jar /home/REDACTED/work/wicket-spring-boot/wicket-spring-boot/wicket-spring-boot-starter-example/target/surefire/surefirebooter-20251229060246169_3.jar /home/REDACTED/work/wicket-spring-boot/wicket-spring-boot/wicket-spring-boot-starter-example/target/surefire 2025-12-29T06-02-45_697-jvmRun1 surefire-20251229060246169_1tmp surefire_0-20251229060246169_2tmp ndor/bin/git (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -jar /home/REDACTED/work/wicket-spring-boot/wicket-spring-boot/wicket-spring-boot-starter-example/target/surefire/surefirebooter-20251229060635675_3.jar /home/REDACTED/work/wicket-spring-boot/wicket-spring-boot/wicket-spring-boot-starter-example/target/surefire 2025-12-29T06-06-35_609-jvmRun1 surefire-20251229060635675_1tmp surefire_0-20251229060635675_2tmp (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java -jar /home/REDACTED/work/wicket-spring-boot/wicket-spring-boot/wicket-spring-boot-starter-example/target/surefire/surefirebooter-20251229060918041_3.jar /home/REDACTED/work/wicket-spring-boot/wicket-spring-boot/wicket-spring-boot-starter-example/target/surefire 2025-12-29T06-09-17_986-jvmRun1 surefire-20251229060918041_1tmp surefire_0-20251229060918041_2tmp git (dns block)
  • maven.repository.redhat.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher clean compile -DskipTests (dns block)
  • packages.confluent.io
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher clean compile -DskipTests (dns block)
  • repo.clojars.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher dependency:tree -Dincludes=org.springframework.boot:* (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher clean compile -DskipTests (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher test (dns block)
  • repository.apache.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher versions:display-dependency-updates -DprocessDependencyManagement=false (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher versions:display-dependency-updates (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher dependency:tree -Dincludes=org.springframework.boot:* (dns block)
  • repository.hazelcast.com
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher clean compile -DskipTests (dns block)
  • repository.sonatype.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher versions:display-dependency-updates -DprocessDependencyManagement=false (dns block)
  • s01.oss.sonatype.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher versions:display-dependency-updates -DprocessDependencyManagement=false (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher versions:display-dependency-updates (dns block)
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher dependency:tree -Dincludes=org.springframework.boot:* (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

This section details on the original issue you should resolve

<issue_title>Framework updates: Spring Boot 4, latest wicket</issue_title>
<issue_description>Upgrade Spring Boot to: 4.0.1
Upgrade Wicket to: 10.8.0</issue_description>

<agent_instructions>Do framework upgrades as described in issue
Also update other dependencies related to wicket and spring if needed</agent_instructions>

Comments on the Issue (you are @copilot in this section)


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 2 commits December 29, 2025 06:01
Co-authored-by: keesvandieren <863966+keesvandieren@users.noreply.github.com>
…base for Spring Boot 4.0 compatibility

Co-authored-by: keesvandieren <863966+keesvandieren@users.noreply.github.com>
Copilot AI changed the title [WIP] Update Spring Boot to version 4.0.1 and Wicket to 10.8.0 Upgrade to Spring Boot 4.0.1 and Wicket 10.8.0 Dec 29, 2025
Copilot AI requested a review from keesvandieren December 29, 2025 06:15
JpaRepositoriesAutoConfiguration.class,
HibernateJpaAutoConfiguration.class,
})
@SpringBootApplication

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot why are exclusions removed?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The exclusions were removed because those AutoConfiguration classes no longer exist in Spring Boot 4.0:

  • DataSourceAutoConfiguration
  • JpaRepositoriesAutoConfiguration
  • HibernateJpaAutoConfiguration

These classes were reorganized/moved in Spring Boot 3.x/4.x. The test class using this configuration (WicketBaseTest) is currently @Disabled, so there's no functional impact.

If you need to re-enable this test and still want to exclude database/JPA autoconfiguration, Spring Boot 4.0 uses a modular approach where data-related autoconfiguration is in separate modules. You could either:

  1. Keep the test disabled (current state)
  2. Use @SpringBootTest(properties = {"spring.autoconfigure.exclude=...}) with the new class names if they exist
  3. Not exclude them and use @MockBean for dependencies instead

Would you like me to investigate the new equivalent exclusions for Spring Boot 4.0, or is the current state (with the test disabled) acceptable?

@ConditionalOnProperty(prefix = DataStoreCassandraProperties.PROPERTY_PREFIX, value = "enabled", matchIfMissing = true)
@ConditionalOnClass(name = "com.datastax.driver.core.Session", value = {CassandraDataStore.class})
@EnableConfigurationProperties({DataStoreCassandraProperties.class})
@AutoConfigureAfter(CassandraAutoConfiguration.class)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot why is this removed?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The @AutoConfigureAfter(CassandraAutoConfiguration.class) annotation was removed because CassandraAutoConfiguration no longer exists in Spring Boot 4.0. This class was part of Spring Boot's autoconfiguration that was reorganized or removed in the 3.x/4.x transition.

The @AutoConfigureAfter annotation was used to ensure this configuration ran after Cassandra's autoconfiguration. Since that class is gone, the annotation had to be removed to compile. The configuration will still work - it just won't have explicit ordering relative to the (now non-existent) CassandraAutoConfiguration.

Copilot AI commented Dec 29, 2025

Copy link
Copy Markdown
Author

Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • repository.sonatype.org
    • Triggering command: /usr/lib/jvm/temurin-17-jdk-amd64/bin/java /usr/lib/jvm/temurin-17-jdk-amd64/bin/java --enable-native-access=ALL-UNNAMED -classpath /usr/share/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar -Dclassworlds.conf=/usr/share/apache-maven-3.9.11/bin/m2.conf -Dmaven.home=/usr/share/apache-maven-3.9.11 -Dlibrary.jansi.path=/usr/share/apache-maven-3.9.11/lib/jansi-native -Dmaven.multiModuleProjectDirectory=/home/REDACTED/work/wicket-spring-boot/wicket-spring-boot org.codehaus.plexus.classworlds.launcher.Launcher dependency:tree -Dincludes=org.springframework.boot:spring-boot-autoconfigure (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Framework updates: Spring Boot 4, latest wicket

2 participants